{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyAudioKits.record"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pyAudioKits provides an audio recording api. First, run the code below to record a 5s audio. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "********** Please speak in 5 seconds. \n",
      "********** End of recording.\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "record = pyAudioKits.record.record(44100,5)  #Record 5s of audio at a sample rate of 44100\n",
    "record.plot()    #Plotting audio waveforms"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sound is generated due to the vibration of a medium, and the pattern of vibration can be described as a **stochastic process**. The essence of an audio signal is a single realization of the stochastic process $\\{X(t),-∞<t<∞\\}$ \\{x(t),-∞<t<∞\\}$.\n",
    "\n",
    "Real-world audio signals are analog and have the characteristics of taking continuous values, continuous time, and infinite rather than causal (real-world sounds exist from before the recording starts and continue after the recording stops). To be able to represent and store the audio signal in a computer, three operations are performed during the recording of audio.\n",
    "\n",
    "One is **quantization**, the so-called **quantization** is to use a finite number of bits to represent the value of $x(t),\\forall t$, thus solving the problem of taking consecutive values. And in modern computer systems, float, double, and other data types have been able to make audio quantization quite fine, resulting in the impact can generally be ignored.\n",
    "\n",
    "Second, **sampling**, the so-called **sampling**, is to let the time domain is factor $T_s$ normalized: $\\{x[n]=x(nT_s),-∞<n<∞\\}$ , so that we can represent the audio signal by a vector $\\vec x_n=x[n]$ with a finite number of components. Each $n$ represents one component of the vector, and the time interval between samples is $T_s$. The $T_s$ is called the **sampling period** and its inverse is the **sampling rate**. This is equivalent to multiplying the analog signal by an impulse sequence with an interval of $T_s$, which in practice is that every time $T_s$, the analog signal $x(t)$ is quantized once. The obtained $x[n]$ is the discrete **digital signal**.\n",
    "\n",
    "Just now we recorded audio using a sample rate of 44100Hz, and the sample period is (1/44100)s."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "44100"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "record.sr    #Show the sample rate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The sampling rate $1/T_s$ is 44100Hz."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Thirdly, **truncation**, for example, the duration of recorded audio is 5s, which is equivalent to just taking $\\{x(t),0≤t<5\\}$ and then sampling and quantizing to get $\\{x[n],0≤n<44100*5\\}$ (the time $t$ when the analog signal is generally started to be collected is set to 0). In the representation it is considered whether to truncate first to get $\\{x(t),0≤t<T_sN_{max}\\}$ before sampling into $\\{x[n],0≤n<N_{max}\\}$, or to sample first into $\\{x[n],-∞≤n<∞\\}$ before truncation to get $\\{x[n],0≤n<N_{max}\\}$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "220500"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(record)\t#Get the number of audio samples"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The number of audio samples $N_{max}$ is 220500. we can also plot the waveform with the number of samples as the x-axis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "record.plot(xlabel=\"n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "record.getDuration()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The audio duration $T_sN_{max}$ is 5s, which matches our expression."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Also, truncation is equivalent to first sampling to get $\\{x_d[n],-∞≤n<∞\\}$, then multiplying by a **rectangular window** $w[n]=\\begin{cases}1\\quad 0≤n<N_{max}\\\\0\\quad others\\end{cases}$ to get $x[n]=\\begin{cases}x_d[n]\\quad 0≤n<N_{max}\\\\0\\quad others\\end{cases}$ . This operation is called **windowing**.\n",
    "\n",
    "After quantization, sampling, and truncation, the audio signal is represented as a digital audio signal that can be stored in a computer and represented as a vector, while the sample rate and duration are the most basic properties of the audio signal."
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "34e3d493db18dfecee561d26c028e75a8172bde10b9fb1f75764229aafdf7eef"
  },
  "kernelspec": {
   "display_name": "Python 3.8.3 ('base')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
